import urllib.request
import re
import os

#top 10 网页列表 [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
# <p class="name"><a href="/films/1203" title="霸王别姬" data-act="boarditem-click" data-val="{movieId:1203}">霸王别姬</a></p>
#         <p class="star">
#                 主演：张国荣,张丰毅,巩俐
#         </p>
# <p class="releasetime">上映时间：1993-01-01</p>

#正则 解析原文 记得添加 re.S 匹配换行符
#<p class="name"><a .*?>(.*?)</a></p><p class="star">(.*?)</p><p class="releasetime">(.*?)</p>
# 1 名称  2 主演  3 上映时间

def top(num):
    url    = 'https://maoyan.com/board/4?offset=%d'%(num)
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'}
    req    = urllib.request.Request(url, headers=headers)
    res    = urllib.request.urlopen(req)
    html   = res.read().decode("utf-8")
    # pat = 'class="name"><a .*?>(.*?)</a></p><p class="star">(.*?)</p><p class="releasetime">(.*?)</p>'
    pat = '<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>'
    dlist = re.findall(pat, html, re.S)
    #('2', '链接', '肖申克的救赎', '\n                主演：蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿\n        ', '上映时间：1994-10-14(美国)', '9.', '5')
    # a = ['\n                主演：蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿\n        ']
    # print(a[0][17:39])
    # a----→主演：蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿
    #dlist[0] -------→ 电影名肖申克的救赎		主演：蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿		上映时间：1994-10-14(美国)		豆瓣评分:9.5
    # print('电影名:'+dlist[0][2]+'\t\t'+dlist[0][3][17:39]+'\t\t'+dlist[0][4]+'\t\t猫眼评分:'+dlist[0][5]+dlist[0][6])
    #信息写入之前打开文件
    file = open('./猫眼top100.txt',"a",encoding='utf-8')
    for i in dlist:
        #i[3].replace("space","").replace("\n","")
        #规范文件信息
        messages = '电影名:'+i[2]+'\t'+i[3].replace("space","").replace("\n","")+'\t'+i[4]+'\t猫眼评分:'+i[5]+i[6]+'\n'
        print(messages)
        file.write(messages)
    #信息写入结束 关闭文件
    file.close()
    ##待补全
    #根据输入内容调整文件内部规范

if __name__ == '__main__':

    a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
    for i in a:
        top(i)
